import axios from "axios";
import store from "@/store";

// console.log(process.env, 'process.env');

// 创建一个axios实例
const request = axios.create({
    // 目标：如果在开发环境下是  "/dev-api1" 如果是在生产环境下 "/prod-api1"
    baseURL: process.env.VUE_APP_API,
    timeout: 5000,
    headers: {},
});

// 给当前的axios实例配置请求拦截器
request.interceptors.request.use((config) => {
    /* 
      进度条配置：
        1.如果想要在每次请求都要进度条，则在拦截器中配置
        2.如果想要路由切换的时候才有进度条，则在路由守卫中配置
    */
    config.headers.userTempId = store.state.User.userTempId
    config.headers.token = store.state.User.token
    return config
})

// 给当前的axios实例配置响应拦截器
request.interceptors.response.use(
    (response) => {
        /* 还要能进入当前响应拦截器，就说明请求是成功的，但是不一定是我们想要的信息，我们还要拿到返回的数据再次判断是否是我们想要的数据 */
        if (response.data.code !== 200 && response.data.code !== 20000) {
            // 此时虽然请求成功，但是不是我们想要的，我们可以把错误直接展示
            console.log(response.data.message);
            // 因为error对象固有一个message属性，所以我们在抛出自己的错误的时候，我们可以把错误封装到一个对象的message属性上，方便后续的处理
            return Promise.reject({ message: response.data.message });
        } else {
            return response.data.data
        }
    },
    (error) => {
        return Promise.reject(error)
    }
);

// 把当前的axios实例暴露出去
export default request